home *** CD-ROM | disk | FTP | other *** search
GNU Info File | 1996-05-06 | 31.2 KB | 799 lines |
- This is Info file cvs.info, produced by Makeinfo-1.63 from the input
- file ./cvs.texinfo.
-
- Copyright (C) 1992, 1993 Signum Support AB Copyright (C) 1993, 1994
- Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
- manual provided the copyright notice and this permission notice are
- preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
- this manual under the conditions for verbatim copying, provided also
- that the section entitled "GNU General Public License" is included
- exactly as in the original, and provided that the entire resulting
- derived work is distributed under the terms of a permission notice
- identical to this one.
-
- Permission is granted to copy and distribute translations of this
- manual into another language, under the above conditions for modified
- versions, except that the section entitled "GNU General Public License"
- and this permission notice may be included in translations approved by
- the Free Software Foundation instead of in the original English.
-
- File: cvs.info, Node: modules, Next: Wrappers, Up: Administrative files
-
- The modules file
- ================
-
- The `modules' file records your definitions of names for collections
- of source code. CVS will use these definitions if you use CVS to
- update the modules file (use normal commands like `add', `commit', etc).
-
- The `modules' file may contain blank lines and comments (lines
- beginning with `#') as well as module definitions. Long lines can be
- continued on the next line by specifying a backslash (`\') as the last
- character on the line.
-
- A module definition is a single line of the `modules' file, in
- either of two formats. In both cases, MNAME represents the symbolic
- module name, and the remainder of the line is its definition.
-
- `MNAME -a ALIASES...'
- This represents the simplest way of defining a module MNAME. The
- `-a' flags the definition as a simple alias: CVS will treat any
- use of MNAME (as a command argument) as if the list of names
- ALIASES had been specified instead. ALIASES may contain either
- other module names or paths. When you use paths in aliases,
- `checkout' creates all intermediate directories in the working
- directory, just as if the path had been specified explicitly in
- the CVS arguments.
-
- `MNAME [ options ] DIR [ FILES... ] [ &MODULE... ]'
- In the simplest case, this form of module definition reduces to
- `MNAME DIR'. This defines all the files in directory DIR as
- module mname. DIR is a relative path (from `$CVSROOT') to a
- directory of source in the source repository. In this case, on
- checkout, a single directory called MNAME is created as a working
- directory; no intermediate directory levels are used by default,
- even if DIR was a path involving several directory levels.
-
- By explicitly specifying files in the module definition after DIR,
- you can select particular files from directory DIR. The sample
- definition for `modules' is an example of a module defined with a
- single file from a particular directory. Here is another example:
-
- m4test unsupported/gnu/m4 foreach.m4 forloop.m4
-
- With this definition, executing `cvs checkout m4test' will create
- a single working directory `m4test' containing the two files
- listed, which both come from a common directory several levels deep
- in the CVS source repository.
-
- A module definition can refer to other modules by including
- `&MODULE' in its definition. `checkout' creates a subdirectory
- for each such module, in your working directory.
-
- `-d NAME'
- Name the working directory something other than the module
- name.
-
- `-e PROG'
- Specify a program PROG to run whenever files in a module are
- exported. PROG runs with a single argument, the module name.
-
- `-i PROG'
- Specify a program PROG to run whenever files in a module are
- committed. PROG runs with a single argument, the full
- pathname of the affected directory in a source repository.
- The `commitinfo', `loginfo', and `editinfo' files provide
- other ways to call a program on commit.
-
- `-o PROG'
- Specify a program PROG to run whenever files in a module are
- checked out. PROG runs with a single argument, the module
- name.
-
- `-s STATUS'
- Assign a status to the module. When the module file is
- printed with `cvs checkout -s' the modules are sorted
- according to primarily module status, and secondarily
- according to the module name. This option has no other
- meaning. You can use this option for several things besides
- status: for instance, list the person that is responsible for
- this module.
-
- `-t PROG'
- Specify a program PROG to run whenever files in a module are
- tagged with `rtag'. PROG runs with two arguments: the module
- name and the symbolic tag specified to `rtag'. There is no
- way to specify a program to run when `tag' is executed.
-
- `-u PROG'
- Specify a program PROG to run whenever `cvs update' is
- executed from the top-level directory of the checked-out
- module. PROG runs with a single argument, the full path to
- the source repository for this module.
-
- File: cvs.info, Node: Wrappers, Next: commit files, Prev: modules, Up: Administrative files
-
- The cvswrappers file
- ====================
-
- Wrappers allow you to set a hook which transforms files on their way
- in and out of CVS. Most or all of the wrappers features do not work
- with client/server CVS.
-
- The file `cvswrappers' defines the script that will be run on a file
- when its name matches a regular expresion. There are two scripts that
- can be run on a file or directory. One script is executed on the
- file/directory before being checked into the repository (this is denoted
- with the `-t' flag) and the other when the file is checked out of the
- repository (this is denoted with the `-f' flag)
-
- The `cvswrappers' also has a `-m' option to specify the merge
- methodology that should be used when the file is updated. `MERGE'
- means the usual CVS behavior: try to merge the files (this generally
- will not work for binary files). `COPY' means that `cvs update' will
- merely copy one version over the other, and require the user using
- mechanisms outside CVS, to insert any necessary changes. The `-m'
- wrapper option only affects behavior when merging is done on update; it
- does not affect how files are stored. See *Note Binary files::, for
- more on binary files.
-
- The basic format of the file `cvswrappers' is:
-
- wildcard [option value][option value]...
-
- where option is one of
- -f from cvs filter value: path tofilter
- -t to cvs filter value: path to filter
- -m update methodology value: MERGE or COPY
-
- and value is a single-quote delimited value.
-
- *.nib -f 'unwrap %s' -t 'wrap %s %s' -m 'COPY'
- *.c -t 'indent %s %s'
-
- The above example of a `cvswrappers' file states that all
- files/directories that end with a `.nib' should be filtered with the
- `wrap' program before checking the file into the repository. The file
- should be filtered though the `unwrap' program when the file is checked
- out of the repository. The `cvswrappers' file also states that a `COPY'
- methodology should be used when updating the files in the repository
- (that is no merging should be performed).
-
- The last example line says that all files that end with a `*.c'
- should be filtered with `indent' before being checked into the
- repository. Unlike the previous example no filtering of the `*.c' file
- is done when it is checked out of the repository.
-
- The `-t' filter is called with two arguments, the first is the name of
- the file/directory to filter and the second is the pathname to where
- the resulting filtered file should be placed.
-
- The `-f' filter is called with one argument, which is the name of the
- file to filter from. The end result of this filter will be a file in
- the users directory that they can work on as they normally would.
-
- File: cvs.info, Node: commit files, Next: commitinfo, Prev: Wrappers, Up: Administrative files
-
- The commit support files
- ========================
-
- The `-i' flag in the `modules' file can be used to run a certain
- program whenever files are committed (*note modules::.). The files
- described in this section provide other, more flexible, ways to run
- programs whenever something is committed.
-
- There are three kind of programs that can be run on commit. They
- are specified in files in the repository, as described below. The
- following table summarizes the file names and the purpose of the
- corresponding programs.
-
- `commitinfo'
- The program is responsible for checking that the commit is
- allowed. If it exits with a non-zero exit status the commit will
- be aborted.
-
- `editinfo'
- The specified program is used to edit the log message, and
- possibly verify that it contains all required fields. This is
- most useful in combination with the `rcsinfo' file, which can hold
- a log message template (*note rcsinfo::.).
-
- `loginfo'
- The specified program is called when the commit is complete. It
- receives the log message and some additional information and can
- store the log message in a file, or mail it to appropriate
- persons, or maybe post it to a local newsgroup, or... Your
- imagination is the limit!
-
- * Menu:
-
- * syntax:: The common syntax
-
- File: cvs.info, Node: syntax, Up: commit files
-
- The common syntax
- -----------------
-
- The four files `commitinfo', `loginfo', `rcsinfo' and `editinfo' all
- have a common format. The purpose of the files are described later on.
- The common syntax is described here.
-
- Each line contains the following:
- * A regular expression
-
- * A whitespace separator--one or more spaces and/or tabs.
-
- * A file name or command-line template.
-
- Blank lines are ignored. Lines that start with the character `#' are
- treated as comments. Long lines unfortunately can *not* be broken in
- two parts in any way.
-
- The first regular expression that matches the current directory name
- in the repository is used. The rest of the line is used as a file name
- or command-line as appropriate.
-
- File: cvs.info, Node: commitinfo, Next: editinfo, Prev: commit files, Up: Administrative files
-
- Commitinfo
- ==========
-
- The `commitinfo' file defines programs to execute whenever `cvs
- commit' is about to execute. These programs are used for pre-commit
- checking to verify that the modified, added and removed files are really
- ready to be committed. This could be used, for instance, to verify
- that the changed files conform to to your site's standards for coding
- practice.
-
- As mentioned earlier, each line in the `commitinfo' file consists of
- a regular expression and a command-line template. The template can
- include a program name and any number of arguments you wish to supply
- to it. The full path to the current source repository is appended to
- the template, followed by the file names of any files involved in the
- commit (added, removed, and modified files).
-
- The first line with a regular expression matching the relative path
- to the module will be used. If the command returns a non-zero exit
- status the commit will be aborted.
-
- If the repository name does not match any of the regular expressions
- in this file, the `DEFAULT' line is used, if it is specified.
-
- All occurances of the name `ALL' appearing as a regular expression
- are used in addition to the first matching regular expression or the
- name `DEFAULT'.
-
- Note: when CVS is accessing a remote repository, `commitinfo' will
- be run on the *remote* (i.e., server) side, not the client side (*note
- Remote repositories::.).
-
- File: cvs.info, Node: editinfo, Next: loginfo, Prev: commitinfo, Up: Administrative files
-
- Editinfo
- ========
-
- If you want to make sure that all log messages look the same way,
- you can use the `editinfo' file to specify a program that is used to
- edit the log message. This program could be a custom-made editor that
- always enforces a certain style of the log message, or maybe a simple
- shell script that calls an editor, and checks that the entered message
- contains the required fields.
-
- If no matching line is found in the `editinfo' file, the editor
- specified in the environment variable `$CVSEDITOR' is used instead. If
- that variable is not set, then the environment variable `$EDITOR' is
- used instead. If that variable is not set a precompiled default,
- normally `vi', will be used.
-
- The `editinfo' file is often most useful together with the `rcsinfo'
- file, which can be used to specify a log message template.
-
- Each line in the `editinfo' file consists of a regular expression
- and a command-line template. The template must include a program name,
- and can include any number of arguments. The full path to the current
- log message template file is appended to the template.
-
- One thing that should be noted is that the `ALL' keyword is not
- supported. If more than one matching line is found, the first one is
- used. This can be useful for specifying a default edit script in a
- module, and then overriding it in a subdirectory.
-
- If the repository name does not match any of the regular expressions
- in this file, the `DEFAULT' line is used, if it is specified.
-
- If the edit script exits with a non-zero exit status, the commit is
- aborted.
-
- Note: when CVS is accessing a remote repository, `editinfo' will be
- run on the *remote* (i.e., server) side, not the client side (*note
- Remote repositories::.).
-
- * Menu:
-
- * editinfo example:: Editinfo example
-
- File: cvs.info, Node: editinfo example, Up: editinfo
-
- Editinfo example
- ----------------
-
- The following is a little silly example of a `editinfo' file,
- together with the corresponding `rcsinfo' file, the log message
- template and an editor script. We begin with the log message template.
- We want to always record a bug-id number on the first line of the log
- message. The rest of log message is free text. The following template
- is found in the file `/usr/cvssupport/tc.template'.
-
- BugId:
-
- The script `/usr/cvssupport/bugid.edit' is used to edit the log
- message.
-
- #!/bin/sh
- #
- # bugid.edit filename
- #
- # Call $EDITOR on FILENAME, and verify that the
- # resulting file contains a valid bugid on the first
- # line.
- if [ "x$EDITOR" = "x" ]; then EDITOR=vi; fi
- if [ "x$CVSEDITOR" = "x" ]; then CVSEDITOR=$EDITOR; fi
- $CVSEDITOR $1
- until head -1|grep '^BugId:[ ]*[0-9][0-9]*$' < $1
- do echo -n "No BugId found. Edit again? ([y]/n)"
- read ans
- case ${ans} in
- n*) exit 1;;
- esac
- $CVSEDITOR $1
- done
-
- The `editinfo' file contains this line:
-
- ^tc /usr/cvssupport/bugid.edit
-
- The `rcsinfo' file contains this line:
-
- ^tc /usr/cvssupport/tc.template
-
- File: cvs.info, Node: loginfo, Next: rcsinfo, Prev: editinfo, Up: Administrative files
-
- Loginfo
- =======
-
- The `loginfo' file is used to control where `cvs commit' log
- information is sent. The first entry on a line is a regular expression
- which is tested against the directory that the change is being made to,
- relative to the `$CVSROOT'. If a match is found, then the remainder of
- the line is a filter program that should expect log information on its
- standard input.
-
- The filter program may use one and only one % modifier (a la
- printf). If `%s' is specified in the filter program, a brief title is
- included (enclosed in single quotes) showing the modified file names.
-
- If the repository name does not match any of the regular expressions
- in this file, the `DEFAULT' line is used, if it is specified.
-
- All occurances of the name `ALL' appearing as a regular expression
- are used in addition to the first matching regular expression or
- `DEFAULT'.
-
- The first matching regular expression is used.
-
- *Note commit files::, for a description of the syntax of the
- `loginfo' file.
-
- Note: when CVS is accessing a remote repository, `loginfo' will be
- run on the *remote* (i.e., server) side, not the client side (*note
- Remote repositories::.).
-
- * Menu:
-
- * loginfo example:: Loginfo example
-
- File: cvs.info, Node: loginfo example, Up: loginfo
-
- Loginfo example
- ---------------
-
- The following `loginfo' file, together with the tiny shell-script
- below, appends all log messages to the file
- `$CVSROOT/CVSROOT/commitlog', and any commits to the administrative
- files (inside the `CVSROOT' directory) are also logged in
- `/usr/adm/cvsroot-log'.
-
- ALL /usr/local/bin/cvs-log $CVSROOT/CVSROOT/commitlog
- ^CVSROOT /usr/local/bin/cvs-log /usr/adm/cvsroot-log
-
- The shell-script `/usr/local/bin/cvs-log' looks like this:
-
- #!/bin/sh
- (echo "-----------------------------------------------------------------";
- echo -n $USER" ";
- date;
- echo;
- sed '1s+'${CVSROOT}'++') >> $1
-
- File: cvs.info, Node: rcsinfo, Next: cvsignore, Prev: loginfo, Up: Administrative files
-
- Rcsinfo
- =======
-
- The `rcsinfo' file can be used to specify a form to edit when
- filling out the commit log. The `rcsinfo' file has a syntax similar to
- the `editinfo', `commitinfo' and `loginfo' files. *Note syntax::.
- Unlike the other files the second part is *not* a command-line
- template. Instead, the part after the regular expression should be a
- full pathname to a file containing the log message template.
-
- If the repository name does not match any of the regular expressions
- in this file, the `DEFAULT' line is used, if it is specified.
-
- All occurances of the name `ALL' appearing as a regular expression
- are used in addition to the first matching regular expression or
- `DEFAULT'.
-
- The log message template will be used as a default log message. If
- you specify a log message with `cvs commit -m MESSAGE' or `cvs commit -f
- FILE' that log message will override the template.
-
- *Note editinfo example::, for an example `rcsinfo' file.
-
- When CVS is accessing a remote repository, the contents of `rcsinfo'
- at the time a directory is first checked out will specify a template
- which does not then change. If you edit `rcsinfo' or its templates,
- you may need to check out a new working directory.
-
- File: cvs.info, Node: cvsignore, Next: history file, Prev: rcsinfo, Up: Administrative files
-
- Ignoring files via cvsignore
- ============================
-
- There are certain file names that frequently occur inside your
- working copy, but that you don't want to put under CVS control.
- Examples are all the object files that you get while you compile your
- sources. Normally, when you run `cvs update', it prints a line for
- each file it encounters that it doesn't know about (*note update
- output::.).
-
- CVS has a list of files (or sh(1) file name patterns) that it should
- ignore while running `update', `import' and `release'. This list is
- constructed in the following way.
-
- * The list is initialized to include certain file name patterns:
- names associated with CVS administration, or with other common
- source control systems; common names for patch files, object files,
- archive files, and editor backup files; and other names that are
- usually artifacts of assorted utilities. Currently, the default
- list of ignored file name patterns is:
-
- RCS SCCS CVS CVS.adm
- RCSLOG cvslog.*
- tags TAGS
- .make.state .nse_depinfo
- *~ #* .#* ,* _$* *$
- *.old *.bak *.BAK *.orig *.rej .del-*
- *.a *.olb *.o *.obj *.so *.exe
- *.Z *.elc *.ln
- core
-
- * The per-repository list in `$CVSROOT/CVSROOT/cvsignore' is
- appended to the list, if that file exists.
-
- * The per-user list in `.cvsignore' in your home directory is
- appended to the list, if it exists.
-
- * Any entries in the environment variable `$CVSIGNORE' is appended
- to the list.
-
- * Any `-I' options given to CVS is appended.
-
- * As CVS traverses through your directories, the contents of any
- `.cvsignore' will be appended to the list. The patterns found in
- `.cvsignore' are only valid for the directory that contains them,
- not for any sub-directories.
-
- In any of the 5 places listed above, a single exclamation mark (`!')
- clears the ignore list. This can be used if you want to store any file
- which normally is ignored by CVS.
-
- File: cvs.info, Node: history file, Next: Setting up, Prev: cvsignore, Up: Administrative files
-
- The history file
- ================
-
- The file `$CVSROOT/CVSROOT/history' is used to log information for
- the `history' command (*note history::.). This file must be created to
- turn on logging. This is done automatically if the `cvs init' command
- is used to set up the repository (*note Setting up::.).
-
- The file format of the `history' file is documented only in comments
- in the CVS source code, but generally programs should use the `cvs
- history' command to access it anyway, in case the format changes with
- future releases of CVS.
-
- File: cvs.info, Node: Setting up, Next: Variables, Prev: history file, Up: Administrative files
-
- Setting up the repository
- =========================
-
- To set up a CVS repository, choose a directory with ample disk space
- available for the revision history of the source files. It should be
- accessable (directly or via a networked file system) from all machines
- which want to use CVS in server or local mode; the client machines need
- not have any access to it other than via the CVS protocol.
-
- To create a repository, run the `cvs init' command. It will set up
- an empty repository in the CVS root specified in the usual way (*note
- Repository::.). For example,
-
- cvs -d /usr/local/cvsroot init
-
- `cvs init' is careful to never overwrite any existing files in the
- repository, so no harm is done if you run `cvs init' on an already
- set-up repository.
-
- `cvs init' will enable history logging; if you don't want that,
- remove the history file after running `cvs init'. *Note history file::.
-
- File: cvs.info, Node: Variables, Prev: Setting up, Up: Administrative files
-
- Expansions in administrative files
- ==================================
-
- Sometimes in writing an administrative file, you might want the file
- to be able to know various things based on environment CVS is running
- in. There are several mechanisms to do that.
-
- To find the home directory of the user running CVS (from the `HOME'
- environment variable), use `~' followed by `/' or the end of the line.
- Likewise for the home directory of USER, use `~USER'. These variables
- are expanded on the server machine, and don't get any resonable
- expansion if pserver (*note Password authenticated::.) is in used;
- therefore user variables (see below) may be a better choice to
- customize behavior based on the user running CVS.
-
- One may want to know about various pieces of information internal to
- CVS. A CVS internal variable has the syntax `${VARIABLE}', where
- VARIABLE starts with a letter and consists of alphanumberic characters
- and `_'. If the character following VARIABLE is a non-alphanumeric
- character other than `_', the `{' and `}' can be omitted. The CVS
- internal variables are:
-
- `CVSROOT'
- This is the value of the CVS root in use. *Note Repository::, for
- a description of the various ways to specify this.
-
- `RCSBIN'
- This is the value CVS is using for where to find RCS binaries.
- *Note Global options::, for a description of how to specify this.
-
- `CVSEDITOR'
- `VISUAL'
- `EDITOR'
- These all expand to the same value, which is the editor that CVS
- is using. *Note Global options::, for how to specify this.
-
- `USER'
- Username of the user running CVS (on the CVS server machine).
-
- If you want to pass a value to the administrative files which the
- user that is running CVS can specify, use a user variable. To expand a
- user variable, the administrative file contains `${=VARIABLE}'. To set
- a user variable, specify the global option `-s' to CVS, with argument
- `VARIABLE=VALUE'. It may be particularly useful to specify this option
- via `.cvsrc' (*note ~/.cvsrc::.).
-
- For example, if you want the administrative file to refer to a test
- directory you might create a user variable `TESTDIR'. Then if CVS is
- invoked as `cvs -s TESTDIR=/work/local/tests', and the administrative
- file contains `sh ${=TESTDIR}/runtests', then that string is expanded
- to `sh /work/local/tests/runtests'.
-
- All other strings containing `$' are reserved; there is no way to
- quote a `$' character so that `$' represents itself.
-
- File: cvs.info, Node: Environment variables, Next: Troubleshooting, Prev: Administrative files, Up: Top
-
- All environment variables which affect CVS
- ******************************************
-
- This is a complete list of all environment variables that affect CVS.
-
- `$CVSIGNORE'
- A whitespace-separated list of file name patterns that CVS should
- ignore. *Note cvsignore::.
-
- `$CVSWRAPPERS'
- A whitespace-separated list of file name patterns that CVS should
- treat as wrappers. *Note Wrappers::.
-
- `$CVSREAD'
- If this is set, `checkout' and `update' will try hard to make the
- files in your working directory read-only. When this is not set,
- the default behavior is to permit modification of your working
- files.
-
- `$CVSROOT'
- Should contain the full pathname to the root of the CVS source
- repository (where the RCS history files are kept). This
- information must be available to CVS for most commands to execute;
- if `$CVSROOT' is not set, or if you wish to override it for one
- invocation, you can supply it on the command line: `cvs -d cvsroot
- cvs_command...' Once you have checked out a working directory, CVS
- stores the appropriate root (in the file `CVS/Root'), so normally
- you only need to worry about this when initially checking out a
- working directory.
-
- `$EDITOR'
- `$CVSEDITOR'
- Specifies the program to use for recording log messages during
- commit. If not set, the default is `/usr/ucb/vi'. `$CVSEDITOR'
- overrides `$EDITOR'. `$CVSEDITOR' does not exist in CVS 1.3, but
- the next release will probably include it.
-
- `$PATH'
- If `$RCSBIN' is not set, and no path is compiled into CVS, it will
- use `$PATH' to try to find all programs it uses.
-
- `$RCSBIN'
- Specifies the full pathname of the location of RCS programs, such
- as co(1) and ci(1). If not set, a compiled-in value is used, or
- your `$PATH' is searched.
-
- `$HOME'
- `$HOMEPATH'
- Used to locate the directory where the `.cvsrc' file is searched
- (`$HOMEPATH' is used for Windows-NT). *note ~/.cvsrc::.
-
- `$CVS_RSH'
- Used in client-server mode when accessing a remote repository
- using RSH. The default value is `rsh'. You can set it to use
- another program for accssing the remote server (e.g. for HP-UX 9,
- you should set it to `remsh' because `rsh' invokes the restricted
- shell). *note Connecting via rsh::.
-
- `$CVS_SERVER'
- Used in client-server mode when accessing a remote repository
- using RSH. It specifies the name of the program to start on the
- server side when accessing a remote repository using RSH. The
- default value is `cvs'. *note Connecting via rsh::.
-
- `$CVS_PASSFILE'
- Used in client-server mode when accessing the `cvs login server'.
- Default value is `$HOME/.cvspass'. *note Password authentication
- client::.
-
- `$CVS_PASSWORD'
- Used in client-server mode when accessing the `cvs login server'.
- *note Password authentication client::.
-
- `$CVS_CLIENT_PORT'
- Used in client-server mode when accessing the server via Kerberos.
- *note Kerberos authenticated::.
-
- `$CVS_RCMD_PORT'
- Used in client-server mode. If set, specifies the port number to
- be used when accessing the RCMD demon on the server side.
- (Currently not used for Unix clients).
-
- `$CVS_CLIENT_LOG'
- Used for debugging only in client-server mode. If set, everything
- send to the server is logged into ``$CVS_CLIENT_LOG'.in' and
- everything send from the server is logged into
- ``$CVS_CLIENT_LOG'.out'.
-
- `$CVS_SERVER_SLEEP'
- Used only for debugging the server side in client-server mode. If
- set, delays the start of the server child process the the
- specified amount of seconds so that you can attach to it with a
- debugger.
-
- `$CVS_IGNORE_REMOTE_ROOT'
- (What is the purpose of this variable?)
-
- `$COMSPEC'
- Used under OS/2 only. It specifies the name of the command
- interpreter and defaults to CMD.EXE.
-
- CVS is a front-end to RCS. The following environment variables
- affect RCS. Note that if you are using the client/server CVS, these
- variables need to be set on the server side (which may or not may be
- possible depending on how you are connecting). There is probably not
- any need to set any of them, however.
-
- `$LOGNAME'
- `$USER'
- If set, they affect who RCS thinks you are. If you have trouble
- checking in files it might be because your login name differs from
- the setting of e.g. `$LOGNAME'.
-
- `$RCSINIT'
- Options prepended to the argument list, separated by spaces. A
- backslash escapes spaces within an option. The `$RCSINIT' options
- are prepended to the argument lists of most RCS commands.
-
- `$TMPDIR'
- `$TMP'
- `$TEMP'
- Name of the temporary directory. The environment variables are
- inspected in the order they appear above and the first value found
- is taken; if none of them are set, a host-dependent default is
- used, typically `/tmp'.
-
- File: cvs.info, Node: Troubleshooting, Next: Copying, Prev: Environment variables, Up: Top
-
- Troubleshooting
- ***************
-
- * Menu:
-
- * Magic branch numbers:: Magic branch numbers
-
- File: cvs.info, Node: Magic branch numbers, Up: Troubleshooting
-
- Magic branch numbers
- ====================
-
- Externally, branch numbers consist of an odd number of dot-separated
- decimal integers. *Note Revision numbers::. That is not the whole
- truth, however. For efficiency reasons CVS sometimes inserts an extra 0
- in the second rightmost position (1.2.3 becomes 1.2.0.3, 8.9.10.11.12
- becomes 8.9.10.11.0.12 and so on).
-
- CVS does a pretty good job at hiding these so called magic branches,
- but in at least four places the hiding is incomplete.
-
- * The magic branch can appear in the output from `cvs status' in
- vanilla CVS 1.3. This is fixed in CVS 1.3-s2.
-
- * The magic branch number appears in the output from `cvs log'.
- This is much harder to fix, since `cvs log' runs `rlog' (which is
- part of the RCS distribution), and modifying `rlog' to know about
- magic branches would probably break someone's habits (if they use
- branch 0 for their own purposes).
-
- * You cannot specify a symbolic branch name to `cvs log'.
-
- * You cannot specify a symbolic branch name to `cvs admin'.
-
- You can use the `admin' command to reassign a symbolic name to a
- branch the way RCS expects it to be. If `R4patches' is assigned to the
- branch 1.4.2 (magic branch number 1.4.0.2) in file `numbers.c' you can
- do this:
-
- $ cvs admin -NR4patches:1.4.2 numbers.c
-
- It only works if at least one revision is already committed on the
- branch. Be very careful so that you do not assign the tag to the wrong
- number. (There is no way to see how the tag was assigned yesterday).
-
- File: cvs.info, Node: Copying, Next: Index, Prev: Troubleshooting, Up: Top
-
- GNU GENERAL PUBLIC LICENSE
- **************************
-
-